{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_plot=np.linspace(-6,6,180)\n",
    "#假设 下面的就是loss function x_plot就是theta的取值范围 要寻找一个最佳的theta保证loss function是最小值\n",
    "y_plot=(x_plot - 0.25) ** 2 - 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x11e2222b0>]"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11e46d748>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x_plot,y_plot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "def J(theta):\n",
    "    try:\n",
    "        return (theta - 0.25) ** 2 - 1\n",
    "    except:\n",
    "        return float(\"inf\")\n",
    "def dJ(theta):\n",
    "    return 2*(theta - 0.25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "def grediant(theta=0,eta=0.01,epsilon=1e-8,n_iter=1e4,last_thetas=[]):\n",
    "    last_thetas.append(theta)\n",
    "    m_iter = 0\n",
    "    while m_iter<n_iter:\n",
    "        last_theta = theta\n",
    "        theta = theta - eta * dJ(theta)\n",
    "        last_thetas.append(theta)\n",
    "        if np.absolute(J(theta) - J(last_theta)) <= epsilon:\n",
    "            break\n",
    "        m_iter += 1\n",
    "    print(len(last_thetas))\n",
    "    return theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_his(last_thetas):\n",
    "    plt.plot(x_plot,y_plot)\n",
    "    plt.scatter(last_thetas,J(np.array(last_thetas)),color='r',marker='x')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "469\n",
      "theta 0.2495105780518242\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11ea20b38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "last_thetas=[]\n",
    "theta=grediant(theta=-6,eta=0.01,epsilon=1e-8,last_thetas=last_thetas)\n",
    "print(\"theta\",theta)\n",
    "plot_his(last_thetas)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
